home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 05.zip / BS1 part 5 / SASC_6.0_Disk_3.adf / Compiler_headers / Include / stdio.h < prev    next >
C/C++ Source or Header  |  1992-07-30  |  6KB  |  220 lines

  1. /* Copyright (c) 1992 SAS Institute, Inc., Cary, NC USA */
  2. /* All Rights Reserved */
  3.  
  4.  
  5. #ifndef _STDIO_H
  6. #define _STDIO_H 1
  7.  
  8. #ifndef _SIZE_T
  9. #define _SIZE_T 1
  10. typedef unsigned int size_t;
  11. #endif
  12.  
  13. #ifndef _VA_LIST
  14. #define _VA_LIST 1
  15. typedef char *va_list;
  16. #endif
  17.  
  18. typedef unsigned long fpos_t;
  19.  
  20. #ifndef NULL
  21. #define NULL   0L
  22. #endif
  23.  
  24. /**
  25. *
  26. * Definitions associated with __iobuf._flag
  27. *
  28. **/
  29.  
  30. #define _IOFBF   0        /* fully buffered (for setvbuf) */
  31. #define _IOREAD  1        /* read flag */
  32. #define _IOWRT   2        /* write flag */
  33. #define _IONBF   4        /* non-buffered flag */
  34. #define _IOMYBUF 8        /* private buffer flag */
  35. #define _IOEOF   16        /* end-of-file flag */
  36. #define _IOERR   32        /* error flag */
  37. #define _IOLBF   64        /* line-buffered flag */
  38. #define _IORW    128        /* read-write (update) flag */
  39. #define _IORKEY  0x2000         /* raw console I/O flag */
  40. #define _IOAPP   0x4000        /* append flag */
  41. #define _IOXLAT  0x8000        /* translation flag */
  42.  
  43. #define BUFSIZ 512        /* standard buffer size */
  44. #define EOF (-1)        /* end-of-file code */
  45. #define FOPEN_MAX 20            /* maximum number of open files */
  46. #define FILENAME_MAX  64        /* maximum filename length */
  47. #define L_tmpnam 64             /* maximum tmpnam filename length */
  48.  
  49. #define SEEK_SET 0              /* Seek from beginning of file */
  50. #define SEEK_CUR 1              /* Seek from current file position */
  51. #define SEEK_END 2              /* Seek from end of file */
  52.  
  53. #define TMP_MAX 999             /* Guaranteed unique temp names */
  54.  
  55. struct __iobuf {
  56.     struct __iobuf *_next;
  57.     unsigned char *_ptr;    /* current buffer pointer */
  58.     int _rcnt;                /* current byte count for reading */
  59.     int _wcnt;                /* current byte count for writing */
  60.     unsigned char *_base;    /* base address of I/O buffer */
  61.     int _size;            /* size of buffer */
  62.     int _flag;                /* control flags */
  63.     int _file;                /* file descriptor */
  64.     unsigned char _cbuff;    /* single char buffer */
  65. };
  66.  
  67. typedef struct __iobuf FILE;
  68.  
  69. extern struct __iobuf __iob[];
  70.  
  71. #define stdin (&__iob[0])    /* standard input file pointer */
  72. #define stdout (&__iob[1])    /* standard output file pointer */
  73. #define stderr (&__iob[2])    /* standard error file pointer */
  74.  
  75.  
  76. /***
  77. *
  78. *     Prototypes for ANSI standard functions.
  79. *
  80. ***/
  81.  
  82.  
  83. extern int remove(const char *);
  84. extern int rename(const char *, const char *);
  85. extern FILE *tmpfile(void);
  86. extern char *tmpnam(char *s);
  87.  
  88. extern int fclose(FILE *);
  89. extern int fflush(FILE *);
  90. extern FILE *fopen(const char *, const char *);
  91. extern FILE *freopen(const char *, const char *, FILE *);
  92. extern void setbuf(FILE *, char *);
  93. extern int setvbuf(FILE *, char *, int, size_t);
  94.  
  95. extern int fprintf(FILE *, const char *, ...);
  96. extern int fscanf(FILE *, const char *, ...);
  97. extern int printf(const char *, ...);
  98. extern int __builtin_printf(const char *, ...);
  99. extern int scanf(const char *, ...);
  100. extern int sprintf(char *, const char *, ...);
  101. extern int sscanf(const char *, const char *, ...);
  102. extern int vfprintf(FILE *, const char *, va_list);
  103. extern int vprintf(const char *, va_list);
  104. extern int vsprintf(char *, const char *, va_list);
  105.  
  106. extern int fgetc(FILE *);
  107. extern char *fgets(char *, int, FILE *);
  108. extern int fputc(int, FILE *);
  109. extern int fputs(const char *, FILE *);
  110. extern int getc(FILE *);
  111. #define getc(p) \
  112.         (((p)->_flag & _IOREAD) ? \
  113.             (--(p)->_rcnt >= 0 && ! ((p)->_file & _IORKEY) ? \
  114.                 *(p)->_ptr++ \
  115.             : \
  116.                 fgetc(p)) \
  117.         : \
  118.             fgetc(p))
  119. extern int getchar(void);
  120. #define getchar() getc(stdin)
  121. extern char *gets(char *);
  122. extern int putc(int, FILE *);
  123.  
  124. #define putc(c,p) \
  125.         (((p)->_flag & _IOWRT) ? \
  126.             (++(p)->_wcnt <= (p)->_size ? \
  127.                 ((((int) (*(p)->_ptr++ = ((unsigned char)c))) == '\n' && \
  128.                    ((p)->_flag & _IOLBF)) ? \
  129.                     fflush(p), ((unsigned char)c) \
  130.                 : \
  131.                     ((unsigned char)c)) \
  132.             : \
  133.                 (--(p)->_wcnt,fputc(c,p))) \
  134.         : \
  135.              fputc(c,p))
  136.  
  137.  
  138. extern int putchar(int);
  139. #define putchar(c) putc(c,stdout)
  140. extern int puts(const char *);
  141. extern int ungetc(int, FILE *);
  142.  
  143. extern size_t fread(void *, size_t, size_t, FILE *);
  144. extern size_t fwrite(const void *, size_t, size_t, FILE *);
  145. extern int fgetpos(FILE *, fpos_t *);
  146. extern int fseek(FILE *, long int, int);
  147. extern int fsetpos(FILE *, const fpos_t *);
  148. extern long int ftell(FILE *);
  149. extern void rewind(FILE *);
  150. #define rewind(p) fseek(p, 0L, 0)
  151.  
  152. extern void clearerr(FILE *);
  153. #define clearerr(p) ((p)->_flag &= ~(_IOERR | _IOEOF))
  154. extern int feof(FILE *);
  155. #define feof(p) (((p)->_flag & _IOEOF) != 0)
  156. extern int ferror(FILE *);
  157. #define ferror(p) (((p)->_flag & _IOERR) != 0)
  158. extern void perror(const char *);
  159.  
  160. #define printf __builtin_printf
  161.  
  162. #ifndef _STRICT_ANSI
  163.  
  164. /* defines for mode of access() */
  165. #define R_OK 4
  166. #define W_OK 2
  167. #define X_OK 1
  168. #define F_OK 0
  169.  
  170. /***
  171. *
  172. *     Prototypes for Non-ANSI functions.
  173. *
  174. ***/
  175.  
  176. extern int __io2errno(int);
  177. extern int fcloseall(void);
  178. extern FILE *fdopen(int, const char *);
  179. extern int fhopen(long, int);
  180. extern int fgetchar(void);
  181. extern int fileno(FILE *);
  182. extern int flushall(void);
  183. extern void fmode(FILE *, int);
  184. extern int _writes(const char *, ...);
  185. extern int _tinyprintf(char *, ...);
  186. extern int fputchar(int);
  187. extern void setnbf(FILE *);
  188. extern int __fillbuff(FILE *);
  189. extern int __flushbuff(int, FILE *);
  190. extern int __access(const char *, int);
  191. extern int access(const char *, int);
  192. extern int chdir(const char *);
  193. extern int chmod(const char *, int);
  194. extern char *getcwd(const char *, int);
  195. extern int unlink(const char *);
  196. extern int poserr(const char *);
  197.  
  198. #define  clrerr  clearerr
  199. #define  access  __access
  200. #define  _filbf  __fillbuff
  201. #define  fileno(p) ((p)->_file)
  202. #define  _flsbf  __flushbuff
  203.  
  204.  
  205. /***
  206. *
  207. *     The following routines allow for raw console I/O.
  208. *
  209. ***/
  210.  
  211. int rawcon(int);
  212. int getch(void);
  213.  
  214. #endif /* _STRICT_ANSI */
  215.  
  216. extern unsigned long __fmask;
  217. extern int __fmode;
  218.  
  219. #endif
  220.